﻿using System;
using System.Collections.Generic;
using System.Text;

namespace DevelopStudio.Common.Basic
{

    /// <summary>
    //// The first seven columns in the output are each one character wide:
    ////  First column: Says if item was added, deleted, or otherwise changed
    ////    ' ' no modifications
    ////    'A' Added
    ////    'C' Conflicted
    ////    'D' Deleted
    ////    'I' Ignored
    ////    'M' Modified
    ////    'R' Replaced
    ////    'X' an unversioned directory created by an externals definition
    ////    '?' item is not under version control
    ////    '!' item is missing (removed by non-svn command) or incomplete
    ////    '~' versioned item obstructed by some item of a different kind
    ////  Second column: Modifications of a file's or directory's properties
    ////    ' ' no modifications
    ////    'C' Conflicted
    ////    'M' Modified
    ////  Third column: Whether the working copy directory is locked
    ////    ' ' not locked
    ////    'L' locked
    ////  Fourth column: Scheduled commit will contain addition-with-history
    ////    ' ' no history scheduled with commit
    ////    '+' history scheduled with commit
    ////  Fifth column: Whether the item is switched or a file external
    ////    ' ' normal
    ////    'S' the item has a Switched URL relative to the parent
    ////    'X' a versioned file created by an eXternals definition
    ////  Sixth column: Repository lock token
    ////    (without -u)
    ////    ' ' no lock token
    ////    'K' lock token present
    ////    (with -u)
    ////    ' ' not locked in repository, no lock token
    ////    'K' locked in repository, lock toKen present
    ////    'O' locked in repository, lock token in some Other working copy
    ////    'T' locked in repository, lock token present but sTolen
    ////    'B' not locked in repository, lock token present but Broken
    ////  Seventh column: Whether the item is the victim of a tree conflict
    ////    ' ' normal
    ////    'C' tree-Conflicted
    ////  If the item is a tree conflict victim, an additional line is printed
    ////  after the item's status line, explaining the nature of the conflict.

    ////The out-of-date information appears in the ninth column (with -u):
    ////    '*' a newer revision exists on the server
    ////    ' ' the working copy is up to date
    /// </summary>
    public enum SvnStatus
    {
        // Summary:
        //     Zero value. Never used by Subversion
        Zero = 0,
        //
        // Summary:
        //     does not exist
        None = 1,
        //
        // Summary:
        //     is not a versioned thing in this wc
        NotVersioned = 2,
        //
        // Summary:
        //     exists, but uninteresting
        Normal = 3,
        //
        // Summary:
        //     is scheduled for addition
        Added = 4,
        //
        // Summary:
        //     under v.c., but is missing
        Missing = 5,
        //
        // Summary:
        //     scheduled for deletion
        Deleted = 6,
        //
        // Summary:
        //     was deleted and then re-added
        Replaced = 7,
        //
        // Summary:
        //     text or props have been modified
        Modified = 8,
        //
        // Summary:
        //     local mods received repos mods
        Merged = 9,
        //
        // Summary:
        //     local mods received conflicting repos mods
        Conflicted = 10,
        //
        // Summary:
        //     is unversioned but configured to be ignored
        Ignored = 11,
        //
        // Summary:
        //     an unversioned resource is in the way of the versioned resource
        Obstructed = 12,
        //
        // Summary:
        //     an unversioned path populated by an svn:externals property
        External = 13,
        //
        // Summary:
        //     a directory doesn't contain a complete entries list
        Incomplete = 14,
    }

    public enum MessageLevel
    {
        Normal = 0,
        Warning,
        Critical
    }
}
